 
UserRegister = function() {
	this.name = new Ext.form.TextField({
		fieldLabel: 'Имя',
		labelStyle : 'float:left;width:130px; text-align:right;',
		emptyText: '',
		width: 180,
		validationEvent: false,
        validateOnBlur: false,
		msgTarget: 'side',
		displayField: 'name',
		name : 'name',
		mode: 'local',
		blankText : "Поле не может быть пустым.",
		allowBlank : false
	});
	this.surname = new Ext.form.TextField({
		fieldLabel: 'Фамилия',
		labelStyle : 'float:left;width:130px; text-align:right;',
		emptyText: '',
		width: 180,
		validationEvent: false,
        validateOnBlur: false,
		msgTarget: 'side',
		displayField: 'surname',
		name : 'surname',
		mode: 'local'
	});
	this.username = new Ext.form.TextField({
		fieldLabel: 'Логин',
		labelStyle : 'float:left;width:130px; text-align:right;',
		emptyText: '',
		width: 180,
		id: 'username',
		validationEvent: "keyup",
		validator : function(val) {
 			Ext.Ajax.request({
				url: 'uservalid.php',
				params: {username: val},
				success: function(response,options) {
					var data = response.responseText;
					if (parseInt(data)!=1) {options.scope.markInvalid("Такой пользователь уже существует.")}
				},
				scope: this
			}); 
			return true;
		},
		msgTarget: 'side',
		displayField: 'username',
		name : 'username',
		mode: 'local',
		blankText : "Поле не может быть пустым.",
		allowBlank : false
	});
	this.password = new Ext.form.TextField({
		fieldLabel: 'Пароль',
		labelStyle : 'float:left;width:130px; text-align:right;',
		inputType : 'password', 
		allowBlank : false,
		emptyText: '',
		width: 180,
		validationEvent: false,
        validateOnBlur: false,
		msgTarget: 'side',
		displayField: 'password',
		name: 'password',
		mode: 'local',
		blankText : "Поле не может быть пустым.",
		allowBlank : false
	});
	this.email = new Ext.form.TextField({
		fieldLabel: 'E-Mail',
		labelStyle : 'float:left;width:130px; text-align:right;',
		emptyText: '',
		width: 180,
		displayField: 'email',
		name : 'email',
		mode: 'local',
		msgTarget: 'side',
		vtypeText  : "Введен некорректный Email. Введите правильный адрес. Например: example@example.com ",
		vtype:'email',
		allowBlank : false,
		blankText : "Поле не может быть пустым."
	});
	
	Ext.form.Field.prototype.msgTarget = 'side';

	this.form = new Ext.FormPanel({
        labelAlign:'top',
		url:'newuser.php',
		waitMsgTarget: true,
        items:[this.name,this.surname,this.username,this.password,this.email],
        border: false,
        bodyStyle:'background:transparent;padding:10px;'
    });
	this.form.on({
        actioncomplete: function(form, action){
            if(action.type == 'load'){
                submit.enable();
            }
        }
    });
	
	
	UserRegister.superclass.constructor.call(this, {
        title: 'Регистрация нового пользователя',
        iconCls: 'regbtn',
        id: 'register-window',
        autoHeight: true,
        width: 400,
        resizable: false,
        plain:true,
        modal: true,
        y: 100,
        autoScroll: true,
        closeAction: 'hide',

        buttons:[{
            text: 'Регистрация',
            handler: this.submitForm,
            scope: this
        },{
            text: 'Отмена',
            handler: this.hide.createDelegate(this, [])
        }],

        items: this.form
    });
 }
 
 Ext.extend(UserRegister, Ext.Window, {
	show: function(panel) {
		UserRegister.superclass.show.apply(this, arguments);
	},
	submitForm: function() {
		this.form.getForm().submit({url:'newuser.php', waitMsg:'Обработка запроса...',success:function(form,action) {this.onSuccess();},failure: function(form,action) {this.onError(action.result);},scope:this});
	},
	onSuccess: function() {
		this.hide();
		Ext.Msg.alert('Регистрация окончена', "Регистрация прошла успешно. Теперь Вы можете войти под своим именем.");
	},
	onError: function(err) {
		if (typeof(err)!="undefined") {
			if (err.name) {
				this.name.markInvalid(err.name);
			}
			if (err.username) {
				this.username.markInvalid(err.username);
			}
			if(err.email) {
				this.email.markInvalid(err.email);
			}
			if (err.password) {
				this.password.markInvalid(err.password);
			}
			if (err.errmsg) {
				this.hide();
				Ext.Msg.alert('Ошибка', err.errmsg);
			}
		}
	},
	showForm : function(parentID) {
		this.form.renderTo(parentID);
	}
});